//引入token解码工具
const {
    jwtDecode
} = require('../util/jwt.js')

const adminModel = require('../db/model/adminModel.js') //引入数据库集合


//token校验中间件
module.exports = async (req, res, next) => {
    //拿到请求中的token
    const {
        token
    } = req.headers

    //对token进行解码(返回一个对象 code代表解码的情况)
    const jwtResult = jwtDecode(token, "666")

    //解码失败
    if (jwtResult.code === 0) {
        return res.send({
            code: 20000,
            msg: "服务端权限校验解码失败",
            data: null
        })
    }


    //解码token成功继续判断数据库中的装态

    try {
        //解码成功,返回的对象中有一个adminName,我们继续去数据库中查询status是否为1
        const findResult = await adminModel.findOne({
            adminName: jwtResult.adminName
        })

        //如果ststus=0,则
        if (findResult.status === 0) {
            return res.send({
                code: 20000,
                msg: '服务端权限校验失败,数据库保存的status异常',
                data: null
            })
        }

        //权限校验通过,继续向下运行
        next();

    } catch (e) {
        console.log("权限控制中:查询status状态出现异常" + e.message);
        res.send({
            code: 20000,
            msg: "权限控制中:查询status状态出现异常" + e.message,
            data: null
        })
    }



}